from wxmbot.app import bot
from wxmbot import exceptions
# __plugin_name__ = 'name'
# __plugin_usage__ = '''功能详解:

# ——— 命令解释 ———
#     别名：
#     说明：
# '''

# 注意, 采用包的形式的插件和采用文件形式的插件名不要相同，否则只能使用其中一个

@bot.on_command("命令名", aliases=['别名1', '别名多用']) 
def test(args, session):
    # 需要 from wxmbot.raw_func import send_text_msg
    from wxmbot.raw_func import send_text_msg
    # 两种发送方法
    info = session.info
    robot_wxid = info['robot_wxid'] # info 的具体情况请查看文档
    from_wxid = info['from_wxid']
    send_text_msg(robot_wxid, from_wxid, f'机器人回复啦on_command1')

# 接受 ['friend_msg', 'group_msg']
@bot.on_command("命令名2", aliases=['别名2', '别名多用']) # 两个 别名多用，那如果命令是别名多用的话就都能用
def test2(args, session):
    # 两种发送方法
    session.send_text_msg(f'机器人回复啦on_command2')

# 接受 ['friend_msg', 'group_msg']
@bot.on_command("命令名3", arg_type='url') # 临时使用 arg_type 方式来处理arg, 默认请在设置中设置ARG_TYPE
def test3(args, session):
    a = 1
    session.send_text_msg(f'机器人回复啦on_command3, a = {a}')
    a = 2
    # 可以直接终止此次会话, 主要用于在其他子函数中想要直接终止会话的情况, 这样就不用回到主函数(该处理函数)中return了
    exceptions.finish()
    a = 3
    # 可以直接终止此次会话, 并发送文本信息, 相当于 session.send_text_msg() + exceptions.finish()
    session.finish(f'机器人回复啦on_command3, a = {a}')
    a = 4
    session.send_text_msg(f'机器人回复啦on_command3, a = {a}')

# cmd 可以使用常量, 也可以使用正则, 此时, cmd_type 为 'regex'
# 这个是匹配 1.1.1.1 或 a.b 这样的(aliases 仍然有用) , 只能为1位数字, 其他类型自己用正则来
@bot.on_command('^\d\.\d\.\d\.\d$', aliases=['^[a-z]\.[a-z]$'], cmd_type='regex')
def test_regex(args, session):
    ret = str(args)
    session.send_text_msg(ret)

# # 这个是匹配所有信息
# @bot.on_command('^.*$', cmd_type='regex')
# def solve_all(args, session):
#     ret = str(args)
#     session.send_text_msg(ret)


# -------------------- 以下还没确认 是否可用

# ['media_image', 'media_audio', 'media_video', 'media_location'] 
@bot.on_command("media_image")
def media_image(args, session): # 命令只会是上边几个中的一个, 为固定命令名, 无别名, 类似暂时收录还不全
    # session.send_text_msg(f'机器人回复啦media_image')
    pass

# 接受 ['group_member_add', 'group_member_decrease', 'friend_verify']
@bot.on_request("group_member_add") # 注意 command 和 request 不一样, 命令只会是上边几个中的一个
def group_member_add(json_data, session):
    # session.send_text_msg(f'机器人回复啦on_request')
    pass

# 接受 ['received_transfer', 'scan_cash_money', 'contacts_change', 'sys_msg']
@bot.on_notice("received_transfer") # 当然啦, 还有notice, 命令只会是上边几个中的一个
def received_transfer(json_data, session):
    # 建议在fixed模块中书写，这里只是一个例子
    pass

# 接受 ['init', 'enable', 'login', 'stop']
@bot.on_env("init")  # 命令只会是上边几个中的一个, 为固定命令名, 出现其余的会报错
def test5(session):
    pass











